gusucode.com > 先进 PID 控制及其 MATLAB 仿真 (程序) > 先进 PID 控制及其 MATLAB 仿真 (程序)\CHAPTER7\zpe_test.m
%Zero Phase Error controller verify clear all; close all; ts=0.001; rin_5=0;rin_4=0;rin_3=0;rin_2=0;rin_1=0; F=3; G=2000; for k=1:1:G time(k)=k*ts; rin(k)=0.50*sin(F*2*pi*k*ts); M=2; if M==1 rin(k+3)=0.50*sin(F*2*pi*(k+3)*ts); rin(k+2)=0.50*sin(F*2*pi*(k+2)*ts); rin(k+1)=0.50*sin(F*2*pi*(k+1)*ts); yout(k)=-0.1328*rin(k+2)+1.266*rin(k+1)-0.1328*rin(k); elseif M==2 yout(k)=-0.1328*rin_1+1.266*rin_2-0.1328*rin_3; end rin_5=rin_4;rin_4=rin_3;rin_3=rin_2;rin_2=rin_1;rin_1=rin(k); end figure(1); plot(time(1:1:G),rin(1:1:G),'r',time(1:1:G),yout(1:1:G),'b'); xlabel('time(s)');ylabel('rin,yout'); figure(2); plot(time(1:1:G),rin(1:1:G)-yout(1:1:G),'r'); xlabel('time(s)');ylabel('error');